/* eslint valid-jsdoc: "off" */

'use strict';

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1616853943116_1370';

  // add your middleware config here
  config.middleware = [ 'err401Handle' ]; // 全局起作用 驼峰引入
  // config.time = {
  //   threshold: 1,
  //   match: '/api', // 只针对 /api/... 下的路由做处理
  // };

  config.multipart = {
    // mode: 'stream',
    mode: 'file',
    fileExtensions: [ '.xlsx' ],
  };

  config.view = {
    defaultViewEngine: 'nunjucks',
    defaultExtension: '.html',
  };

  config.security = {
    enable: false,
    csrf: {
      enable: false,
    },
  };

  // config.mysql = { // 配置 mysql
  //   client: {
  //     host: 'localhost',
  //     port: '3306',
  //     user: 'root',
  //     password: 'lx123456',
  //     database: 'user',
  //   },
  // };

  config.sequelize = { // 配置 sequelize
    dialect: 'mysql',
    host: '127.0.0.1',
    port: 3306,
    database: 'users',
    password: 'lx123456',
    // 兼容 mongoose
    delegate: 'sqlModel', // 定义挂载到框架上为ctx.sqlModel
    baseDir: 'model/sequelize', // 定义model文件目录app/`${sqlModel}`
    define: { // 定义表时的相关的设置，也可在表中单独定义
      timestamps: false, // 是否支持自动生产created_at，updated_at.,deleted_at,自动生成的时间为标准时间
      underscored: true, // 是否支持驼峰转为表的下划线
      freezeTableName: true, // 不自动将表名转换为复数形式
      // paranoid:false, //删除是否自动插入时间
    },
  };

  // config.mongoose = {
  //   client: {
  //     url: 'mongodb://test-dev:123456@47.93.202.11:27017/user?authSource=admin',
  //     options: {
  //       useNewUrlParser: true,
  //       useUnifiedTopology: true,
  //       useFindAndModify: false,
  //       useCreateIndex: true,
  //     },
  //   },
  // };

  config.onerror = {
    accepts: ctx => {
      if (ctx.get('content-type') === 'application/json') return 'json';
      return 'html';
    },
    errorPageUrl: '/public/error.html',
  };

  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };

  return {
    ...config,
    ...userConfig,
  };
};

